/**
 * @bsp_led.c
 *
 * @copyright This file create by rensuiyi ,all right reserve!
 *
 * @author rensuiyi
 *
 * @date 20-9-28 下午7:26
 */
#include "includes.h"
#include "bsp_led.h"

static void bsp_io_reg_init(void) {
  GPIO_InitTypeDef init;

  /* enable the clock */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);

  /* enable the pin */
  GPIO_StructInit(&init);

  init.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8|GPIO_Pin_9;
  init.GPIO_Mode = GPIO_Mode_OUT;
  init.GPIO_OType = GPIO_OType_PP;
  init.GPIO_Speed = GPIO_Speed_25MHz;

  GPIO_Init(GPIOF, &init);
}

void bsp_led_on(int led_id) {
  switch (led_id) {
    case BSP_LED_1:
      GPIO_ResetBits(GPIOF, GPIO_Pin_6);
      break;
    case BSP_LED_2:
      GPIO_ResetBits(GPIOF, GPIO_Pin_7);
      break;
    case BSP_LED_3:
      GPIO_ResetBits(GPIOF, GPIO_Pin_8);
      break;
    case BSP_LED_4:
      GPIO_ResetBits(GPIOF, GPIO_Pin_9);
      break;
  }
}

/**
 * @brief toggle the led
 *
 *
 * @author rensuiyi (20-9-30)
 *
 * @param led_id
 */
void bsp_led_toggle(int led_id) {
  switch (led_id) {
    case BSP_LED_1:
      GPIO_ToggleBits(GPIOF, GPIO_Pin_6);
      break;
    case BSP_LED_2:
      GPIO_ToggleBits(GPIOF, GPIO_Pin_7);
      break;
    case BSP_LED_3:
      GPIO_ToggleBits(GPIOF, GPIO_Pin_8);
      break;
    case BSP_LED_4:
      GPIO_ToggleBits(GPIOF, GPIO_Pin_9);
      break;
  }
}

void bsp_led_off(int led_id) {
  switch (led_id) {
    case BSP_LED_1:
      GPIO_SetBits(GPIOF, GPIO_Pin_6);
      break;
    case BSP_LED_2:
      GPIO_SetBits(GPIOF, GPIO_Pin_7);
      break;
    case BSP_LED_3:
      GPIO_SetBits(GPIOF, GPIO_Pin_8);
      break;
    case BSP_LED_4:
      GPIO_SetBits(GPIOF, GPIO_Pin_9);
      break;
  }
}

int bsp_led_init(void) {
  bsp_io_reg_init();
  return 0;
}

